Control of video playback in video playback devices such as computers, set top boxes, hand held devices, and any other suitable video playback device, for example, is typically performed by a video driver (e.g., a software module), which may be called upon by an application (e.g., a software application) both being run by a processor, such as a central processing unit (CPU) in the computer to play video data. Video as used herein includes video and/or graphics data or any visual data stored in a display memory for display on a display medium whether a display screen or paper or other medium. Additionally, the software application will call the driver to direct video data processing by a video graphics processor or other devices, prior to playback. Such applications calling video playback use timing information from the display device (e.g., a current vertical line (VLINE)) displaying the video content to determine when hardware (e.g., the video graphics processor) is able to display a particular video frame of a video sequence. Typically, changing one video frame to a next video frame or “flipping” a sequence of frames for video playback occurs during a VBLANK (vertical blanking interval) or VSYNC (vertical synchronization) time period signifying the frame of video information has been displayed.
Applications, however, do not typically receive display timing data, such as the VBLANK or VSYNC timing information. Thus, without such information, a decision by the application to command a flip of a video frame may not occur with enough precision to synchronize or calibrate the video frame rate with the display frame rate of a display screen (e.g., the refresh rate). This lack of precision may arise due to variations of the display screen's refresh rate and other display properties. In essence, when a video playback application has discretion to calibrate the video playback, typically the application will end up making wrong decisions concerning calibration of flip calls to the display frame rate resulting in video frames being dropped repeatedly in an unpredictable fashion. As a result, the video playback has jitter and tearing and the video quality shown on the actual physical display medium becomes poor. Additionally, because the application, which is running on the CPU, is directing video playback timing, the application often has to wait for video information to be processed and displayed before proceeding with another flip call. This waiting takes up valuable processing resources of the CPU.